package rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.entitet;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@SuppressWarnings("serial")
@Entity
@Table(name = "vozac")
@NamedQuery(name = "ukupnaCenaPruzenihUsluga", query = "select coalesce(sum(v.cena), 0) from Voznja v where v.vozac.id = :vozacId and v.odrediste is not null")
public class Vozac extends Korisnik {

	@Transient
	private Double ukupnaCenaPruzenihUsluga;

	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
	@JoinColumn(name = "vz_vozilo", referencedColumnName = "vo_id")
	private Vozilo vozilo;

	@ElementCollection
	@CollectionTable(name = "kategorija", joinColumns = @JoinColumn(name = "kd_vozac_id"))
	private List<KategorijaDozvole> kategorija;

	public Vozac() {
		super();
	}

	public Vozac(Long jmbg, String ime, String prezime, String korisnickoIme,
			String lozinka) {
		super(jmbg, ime, prezime, korisnickoIme, lozinka);
	}

	public Double getUkupnaCenaPruzenihUsluga() {
		return ukupnaCenaPruzenihUsluga;
	}

	public void setUkupnaCenaPruzenihUsluga(Double ukupnaCenaPruzenihUsluga) {
		this.ukupnaCenaPruzenihUsluga = ukupnaCenaPruzenihUsluga;
	}

	public Vozilo getVozilo() {
		return vozilo;
	}

	public void setVozilo(Vozilo vozilo) {
		this.vozilo = vozilo;
	}

	public List<KategorijaDozvole> getKategorija() {
		return kategorija;
	}

	public void setKategorija(List<KategorijaDozvole> kategorija) {
		this.kategorija = kategorija;
	}

	@Override
	public String toString() {
		return "Vozac [ukupnaCenaPruzenihUsluga=" + ukupnaCenaPruzenihUsluga
				+ ", vozilo=" + vozilo + ", id=" + id + ", jmbg=" + jmbg
				+ ", ime=" + ime + ", prezime=" + prezime + ", korisnickoIme="
				+ korisnickoIme + ", lozinka=" + lozinka + "]";
	}

}
